package com.chushouya.controller.product.admin;

import com.chushouya.common.constant.ServiceType;
import com.general.framework.core.enums.BusinessType;
import com.general.framework.core.schema.Response;
import com.general.framework.web.annotations.Log;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemDetailDTO;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemImportDTO;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemUpdateDTO;
import com.chushouya.product.service.admin.SkuEvaluateItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@Api(tags = ServiceType.PLATFORM + "SKU估价项目管理")
@RestController
@RequestMapping(ServiceType.PLATFORM + "/skuEvaluateItem")
public class SkuEvaluateItemController {

    @Resource
    private SkuEvaluateItemService skuEvaluateItemService;

    @ApiOperation("获取SKU估价项目详情")
    @GetMapping("/detail")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "skuItemId", value = "SKU估价项目ID", required = true)
    })
    public Response<SkuEvaluateItemDetailDTO> getDetail(@RequestParam Long skuItemId) {
        return Response.success(skuEvaluateItemService.getSkuEvaluateItemDetail(skuItemId));
    }

    @ApiOperation("修改SKU估价项目")
    @Log(businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    public Response<Long> edit(@Validated @RequestBody SkuEvaluateItemUpdateDTO skuEvaluateItem) {
        return Response.success(skuEvaluateItemService.editSkuEvaluateItem(skuEvaluateItem));
    }

    @ApiOperation("导入估价项目")
    @Log(businessType = BusinessType.UPDATE)
    @PostMapping("/import")
    public Response<Void> importFromTemplate(@Validated @RequestBody SkuEvaluateItemImportDTO importDTO) {
        skuEvaluateItemService.importFromTemplate(importDTO.getProductId(), importDTO.getTempId());
        return Response.success();
    }
}
